package 集合List;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;
/**
 * @描述: Java中如何去除List中的重复的值？
 * @作者: 宋利军 
 */
public class 如何去除List集合中重复的元素2 {
	/**
    AAAA AAAA BBBB BBBB CCCC CCCC CCCC CCCC
    */
   public static void main(String[] args) {
       List<String> list = new ArrayList<String>();
       list.add("AAAA");
       list.add("AAAA");
       list.add("AAAA");
       list.add("BBBB");
       list.add("BBBB");
       list.add("BBBB");
       list.add("CCCC");
       list.add("CCCC");
       list.add("CCCC");
       list.add("DDDD");

       new 如何去除List集合中重复的元素2().removeDuplicateWithOrder(list);
//     System.out.println(list);
   }

   // 删除ArrayList中重复元素
   public static void removeDuplicate(List list) {
       for (int i = 0; i < list.size() - 1; i++) {
           for (int j = list.size() - 1; j > i; j--) {
               if (list.get(j).equals(list.get(i))) {
                   list.remove(j);
               }
           }
       }
       System.out.println(list);
   }

   // 方法二：通过HashSet剔除
   // 删除ArrayList中重复元素,add进去顺序就变了不考虑顺序的话可以使用
   public static void removeDuplicate1(List list) {
       HashSet h = new HashSet(list);
       list.clear();
       list.addAll(h);
       System.out.println(list);
   }

   // 方法三： 删除ArrayList中重复元素，保持顺序
   // 删除ArrayList中重复元素，保持顺序
   public static void removeDuplicateWithOrder(List list) {
       Set set = new HashSet();
       List newList = new ArrayList();
       for (Iterator iter = list.iterator(); iter.hasNext();) {
           Object element = iter.next();
           if (set.add(element))
               newList.add(element);
       }
       list.clear();
       list.addAll(newList);
       System.out.println(" remove duplicate " + list);
   }
}